前兩天建立的 model: customers 以顧客主檔為主,關聯 orders,將每位顧客的第一次消費日期、最近消費日期、總訂單數量,合為一個查詢。
那麼,清理出來的邏輯,後續要如何在我們的 BigQuery 看到呢?
今天,我們要聊的是,如何透過 dbt 指令來將這些 model 打到 BigQuery。
由下方的指令列輸入 dbt run
按下 Enter。
執行完成後檢查一下是否都有成功 (success)。
點開 log 可以看看 dbt run 做了什麼事情。
如果想看更詳細,可以點 Details。
或是上面的 System Logs 也可以點開
由 log 可以看出,執行 dbt run 的時候,dbt Cloud server 在我們的 BigQuery 建立了與 model 同名的 view: dbt_dev.customers。(dbt_dev 是我們在 Day 02 建立專案時,指定的 dataset 名稱)
如果我們回到 BigQuery,可以看到執行完指令之後,確實長出了新的 data set: dbt_dev,以及我們剛剛建立的 models,對應的 views:
剛剛,我們執行指令 dbt run 後,三個 models 在目標 BiqQuer產生的是 view。
如果要改產成 table,要怎麼做呢?
在 dbt 中,有四種 materializations:
預設的 materialization 是 view,另一個同樣很基本的 materialization 則是 table。
其他兩個較進階,今天不會多說明。
Materialization 可以依每個 model 分別指定,也可以在設定檔中指定一整個專案或一整個資料夾的預設materialization,接下來我會分別說明。
在 customers model 最上面加上 {{ config(materialized="table") }}
加完之後存檔執行 dbt run ,執行完成之後可以從 log 看到該 model 被跑成 table
在 BigQuery 看到 customers 確實由原本的 view 變成了 table
開啟 dbt_project.yml,在 models 底下的 jaffle_shop 下面加上 materialized: table
(請注意縮排)
存檔後再次執行 dbt run,到 BigQuery 檢查結果,可以看到除了 customers 之外,其他兩個 model 也被產成了 table。
今天我們示範了第一個 dbt 指令 dbt run
,以及將 view 如何切換為 table。
依照慣例,我們再次 Commit,提交今天的異動。
除此之外,因明天我們要進入 Deployment 的部份,目前我的異動都在 demo 分支,但 Deployment 取的是 main branch。所以我們要把目前為止的異動,從 demo branch merge 到 main branch。
Create pull request
再點一次 Create pull request
Title 和 Description 自由填寫,再點一次 Create pull request
點選 Merge pull request
Confirm merge
完成後,這些異動就會在 main branch 生效。
明天的主題:dbt Cloud Deployment,如何將我們的 dbt models 佈署到正式環境。
歡迎加入 dbt community
對 dbt 或 data 有興趣 👋?歡迎加入 dbt community 到 #local-taipei 找我們,也有實體 Meetup 請到 dbt Taipei Meetup 報名參加